Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

211
Visualizações
Diferencia entre async(req,res,next) y async(req,res,()=>{}

Recientemente me encontré con este código y no entiendo por qué se ha omitido el next de la función de protect (dentro de la función de protección y protectandauth ) mientras que originalmente se incluyó en la función de protect . Quiero saber la diferencia entre protect=async(req,res,next) y protect=async(req,res,()=>{} .

También veo que aunque next se omite en la función protect (la que está dentro de protectandauth ), todavía se usa en el código después de la declaración 'if', ¿cómo es eso posible?

Código:

 export const protect = async (req, res, next) => { if ( req.headers.authorization && req.headers.authorization.startsWith("Bearer") ) { let token; token = req.headers.authorization.split(" ")[1]; const decoded = jwt.verify(token, "kris"); req.userId = decoded.id; try { req.user = await User.findById(req.userId).select("-password"); next(); } catch (error) { res.status(401).json(error.message); } if (!token) { res.status(404).json("no token found"); } } }; export const protectandauth = async (req, res, next) => { protect(req, res, () => { if (req.userId == req.params.id) { next(); } else { res.status(401).json("not authorised"); } }); };
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Cada devolución de llamada en la que accede a req y res , también puede acceder a next . next es una función que se usa para decir "pasar a la próxima devolución de llamada", sabiendo que una solicitud puede ser procesada por múltiples devoluciones de llamada, así:

 const firstCallback= (req, res, next) => {} const secondCallback= (req, res, next) => {} app.get("/", firstCallback); app.get("/", secondCallback);
 // or using this syntax app.get("/", firstCallback, secondCallback);

En el ejemplo anterior, cuando llega una solicitud a / , firstCallback la maneja primero y es uno de los dos escenarios a continuación (de lo contrario, la solicitud se bloqueará y el usuario no obtendrá una respuesta):

  1. Detiene la solicitud llamando a uno de los métodos res , como res.status(401).json("not authorised");
  2. Dice "pasar a la próxima devolución de llamada" llamando a next() , y luego secondCallback lo maneja.

Si se omite next de los parámetros, llamará a next() donde no está undefined y eso genera un error. Hablando del uso de la función de protect , si observa, existe next como parte de los parámetros de protectandauth , y es ese next el que se usa dentro del tercer parámetro de protect , que es:

 () => { if (req.userId == req.params.id) { next(); } else { res.status(401).json("not authorised"); } }

Y en este código específico que tiene, la función anterior se pasa como next en la definición de protect .

about 4 years ago · Santiago Trujillo Relatório

0

Usamos next si queremos pasar nuestra solicitud al siguiente middleware en línea. Tal vez en protect, el programador podría no querer pasar el requerimiento al siguiente middleware pero en protectandauth quiere pasar el req al siguiente middleware si esta condición resulta ser cierta

 if (req.userId == req.params.id) { next(); }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda